/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package centralehotelweb.bean;

import centralehotel.metier.backoffice.ReservationMetierLocal;
import centralehotel.metier.backoffice.RessourcesMetierLocal;
import centralehotel.modele.Chambre;
import centralehotel.modele.FicheHotel;
import centralehotel.modele.GestionnaireHotel;
import centralehotel.modele.Reservation;
import java.io.NotActiveException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Vector;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.servlet.ServletContext;

/**
 *
 * @author Mathieu
 */
public class PlanningReservationsBean extends AbstractBean {
    @EJB
    private ReservationMetierLocal reservationGestMetier;
  

   
    private ArrayList<ChambrePlanning> chambres=new ArrayList<ChambrePlanning>();
    private FicheHotel hotel;
    private GestionnaireHotel gestionnaire;
    private Vector<String> listeMois = new Vector<String>();
    private Collection<HotelReservationWrapper> hotelReservationListe;
    private Date dateDebut=new Date();
    private Date dateFin;

    public Collection<ChambrePlanning> getChambres() {
        chambres=new ArrayList<ChambrePlanning>();
        if(hotel==null)
            return chambres;
        
        Calendar c=new GregorianCalendar();
        c.setTime(dateDebut);
        int nbJours=c.getActualMaximum(c.DAY_OF_MONTH);
        
        for(Chambre chambre : hotel.getChambreCollection()){
            ChambrePlanning chPlan=new ChambrePlanning();
            chPlan.setChambre(chambre);
                    
            
            
            for(int i=1;i<=nbJours;i++){
                Boolean flag=false;
                System.out.println("################## "+i);
                for(Reservation resa : chambre.getReservationCollection()){
                    Date d=new Date(c.getTime().getYear(), c.get(c.MONTH), i);
                    System.out.println(resa.getDateEntree()+" "+resa.getDateSortie()+" "+d);
                    resa.getDateEntree().setSeconds(0);
                    resa.getDateEntree().setMinutes(0);
                    resa.getDateEntree().setHours(0);
                   
                    if(resa.getDateEntree().equals(d) || resa.getDateSortie().equals(d) || resa.getDateEntree().before(d) && resa.getDateSortie().after(d)){
                        System.out.println("OQP !!");
                       flag=true;
                    }
                }
                chPlan.getJours().add(flag);
            }
            
            chambres.add(chPlan);
        }
        return chambres;
    }

    public void setChambres(ArrayList<ChambrePlanning> chambres) {
        this.chambres = chambres;
    }

    public FicheHotel getHotel() {

        return hotel;
    }

    public List<SelectItem> getHotelItems() {
        gestionnaire = getLoginBean().getGestionnaire();
        
        if(hotel==null && gestionnaire.getFicheHotelCollection()!=null)
            setHotel(gestionnaire.getFicheHotelCollection().iterator().next());
        
        return buildSelectCollection(gestionnaire.getFicheHotelCollection(), "nom");
    }

    public void setHotel(FicheHotel hotel) {
        this.hotel = hotel;
    }

    public void action() {
    }

    public Vector<String> getListeMois() {
        for (int i = 1; i <= 12; i++) {
            //  Date d= new Date(new Date().getYear(), 1, 0);
            listeMois.add(i + "");
        }
        return listeMois;
    }

    public List<SelectItem> getListItemsMois() {
        throw new RuntimeException();
    }

    public void setListeMois(Vector<String> listeMois) {
        this.listeMois = listeMois;
    }

  

    public Date getDateDebut() {
        return dateDebut;
    }

    public void setDateDebut(Date dateDebut) {
        this.dateDebut = dateDebut;
    }

    public Date getDateFin() {
        return dateFin;
    }

    public void setDateFin(Date dateFin) {
        this.dateFin = dateFin;
    }

    public Collection<HotelReservationWrapper> getHotelReservationListe() {
        if (hotelReservationListe == null) {
            if (hotel == null) {
                return new ArrayList<HotelReservationWrapper>();
            }
            hotelReservationListe = new ArrayList<HotelReservationWrapper>();
            for (FicheHotel h : getLoginBean().getGestionnaire().getFicheHotelCollection()) {
                hotelReservationListe.add(new HotelReservationWrapper(h, reservationGestMetier.getAllReservationByFicheHotel(h)));
            }
        }
        return hotelReservationListe;
    }

    public void setHotelReservationListe(Collection<HotelReservationWrapper> hotelReservationListe) {
        this.hotelReservationListe = hotelReservationListe;
    }
}
